home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / mslang / poetmf / hello.hcd next >
Encoding:
Text File  |  1993-08-06  |  3.6 KB  |  188 lines

  1. //******************************************************************
  2. //
  3. //    hello.hcd
  4. //
  5. //    class definitions for the Hello ObjectServer App
  6. //
  7. //    D. Bartels
  8. //
  9. //    classes
  10. //        Address
  11. //        Person
  12. //        Programmer
  13. //
  14. //******************************************************************
  15.  
  16. #ifndef BKS_HXX
  17. #include <bks.hxx>
  18. #endif
  19. #ifndef PTSTRING_HXX
  20. #include <ptstring.hxx>
  21. #endif
  22. #ifndef PTCONST_HXX
  23. #include <ptconst.hxx>
  24. #endif
  25. #ifndef PTBLOB_HXX
  26. #include <ptblob.hxx>
  27. #endif
  28.  
  29. #if defined ( _Windows )
  30. #ifndef __WINDOWS
  31. #define __WINDOWS
  32. #endif
  33. #endif
  34.  
  35. #define PERSON_NAME_INDEXED
  36. //#define EXP_YEARS_INDEXED
  37. //#define PROGRAMMER_NAME_INDEXED
  38.  
  39. //-------------------------------------------------------------------
  40.  
  41. persistent class Address
  42. {
  43. private:
  44.     PtString    street;
  45.     short        zip;
  46.     PtString    city;
  47.  
  48. public:
  49.     Address ()                {;}
  50.  
  51.     Address& operator = ( Address & adr ) 
  52.     {
  53.         street = adr.street;
  54.         zip = adr.zip;
  55.         city = adr.city;
  56.         return *this;
  57.     }
  58.  
  59.     char    *GetStreet ()        { return (char *) street; }
  60.     int        GetZip ()            { return zip; }
  61.     char    *GetCity ()            { return (char *) city; }
  62.  
  63. #ifndef __WINDOWS
  64.     void Input ();
  65.     void Print ();
  66. #else
  67.     char * Print( char *buffer );
  68. #endif // __WINDOWS
  69.  
  70.     void SetAddress( char *s, int z, char *c )
  71.     {
  72.         street = s;
  73.         zip = z;
  74.         city = c;
  75.     }
  76. };
  77.  
  78. //-------------------------------------------------------------------
  79.  
  80. persistent class Picture
  81. {
  82. public:
  83.     PtBlob            picture;
  84.  
  85. public:
  86.     PtBlob *GetPicture()            { return &picture; }
  87.     void SetPicture(PtBlob& blob)    { picture = blob; }
  88. };
  89.  
  90. //-------------------------------------------------------------------
  91.  
  92. class PtOnDemand;
  93.  
  94. persistent class Person
  95. {
  96. public:
  97.     PtString            name;
  98.     ondemand<Picture>    pict;
  99.     cset<PtString>        firstnames;
  100.     cset<Address*>        adrs;
  101.  
  102. public:
  103.     Person() {;}
  104.     virtual ~Person();
  105.  
  106.     char    *GetName ()            { return (char *) name; }
  107.     void    SetName( char *s )    { name = s; }
  108.     int EmptyAddresses ()        { return adrs.Clear (); }
  109.  
  110. #ifndef __WINDOWS
  111.     virtual void Input ();
  112.     virtual void FileInput (void *filepointer);
  113.     virtual void Print ();
  114.     virtual int Notify( PtOnDemand* Object, PtOnDemand* RootObject,
  115.                         PtWatchMode action );
  116. #else
  117.     virtual void Init ();
  118.     virtual char * Print (char *buffer);
  119. #endif // __WINDOWS
  120.  
  121.     useindex PersonNameIndex;
  122. };
  123.  
  124. //-------------------------------------------------------------------
  125.  
  126. persistent class Programmer : public Person
  127. {
  128. public:
  129.     short        exp_years;        // Years of experience
  130.     PtString    language;        // Programming language of choice
  131.  
  132. public:
  133.     Programmer ()                { exp_years = 0; }
  134.     virtual ~Programmer();
  135.  
  136.     int     GetExp ()            { return exp_years; }
  137.     void    SetExp( int e )        { exp_years = e; }
  138.     char    *GetLang ()            { return (char *) language; }
  139.     void    SetLang( char *l )    { language = l; }
  140.  
  141. #ifndef __WINDOWS
  142.     virtual void Input ();
  143.     virtual void Print ();
  144. #else
  145.     virtual void Init ();
  146.     virtual char * Print ( char *buffer );
  147. #endif // __WINDOWS
  148.  
  149.  
  150. #ifdef EXP_YEARS_INDEXED
  151.      useindex ProgrammerExp_yearsIndex;
  152. #endif
  153. #ifdef PROGRAMMER_NAME_INDEXED
  154.      useindex PersonNameIndex;
  155. #endif
  156. };
  157.  
  158. //-------------------------------------------------------------------
  159.  
  160. indexdef PersonNameIndex : Person
  161. {
  162.     name[[10]];
  163. };
  164.  
  165. //-------------------------------------------------------------------
  166.  
  167. #ifdef EXP_YEARS_INDEXED
  168. indexdef ProgrammerExp_yearsIndex : Programmer
  169. {
  170.     exp_years;
  171. };
  172. #endif
  173.  
  174. //-------------------------------------------------------------------
  175.  
  176.  
  177. typedef lset<ondemand<Person>>        PersonResult;
  178. typedef lset<ondemand<Programmer>>    ProgrammerResult;
  179. typedef lset<ondemand<Address>>        AddressResult;
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.